package com.woniuxy.kaer.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.woniuxy.kaer.commons.util.PageInfo;
import com.woniuxy.kaer.service.dto.*;
import com.woniuxy.kaer.service.entity.ServiceOrder;
import com.woniuxy.kaer.service.param.MakeServiceOrderParam;
import com.woniuxy.kaer.service.param.RateOrderParam;
import com.woniuxy.kaer.service.param.ReplyCommentParam;
import com.woniuxy.kaer.service.param.SelectOrderParam;

import java.util.List;
import java.util.Map;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author 程诗洋
 * @since 2025年02月17日
 */
public interface ServiceOrderService extends IService<ServiceOrder> {

    OrderMessageDto makeServiceOrder(MakeServiceOrderParam param)throws Exception;

    void takeServiceOrder(String serviceOrderId,Integer founderId);

    String pay(String serviceOrderId, Integer userId)throws Exception;

    void handleOrder(Map<String, String> params)throws Exception;

    void updateOrder(String serviceOrderId, String payTime);

    void cancelOrder(String serviceOrderId)throws Exception;

    void rateOrder(RateOrderParam param)throws Exception;

    void userConfirmOrderFinish(String serviceOrderId, Integer userId)throws Exception;

    void OrderTimeout(String serviceOrderId, Integer founderId)throws Exception;

    void userConfirmOrder(String serviceOrderId, Integer userId)throws Exception;

    OrderInfoDto getServiceOrderById(String serviceOrderId)throws Exception;

    List<OrderInfoDto> getAllServiceOrder(Integer shopId)throws Exception;

    PageInfo getAllServiceOrderByPage(SelectOrderParam param)throws Exception;

    List<OrderInfoDto> getAllServiceOrderByProcessing(Integer shopId, Integer founderId)throws Exception;

    List<OrderInfoDto> getAllServiceOrderByUnpaid(Integer userId)throws Exception;

    List<OrderInfoDto> getAllServiceOrderByFinished(Integer userId)throws Exception;

    TodayOrderInfoDto getTodayOrderInfo(Integer founderId)throws Exception;

    ThreeMonthMerchantStatisticsDto getThreeMonthOrderInfo(Integer founderId)throws Exception;

    List<ServiceAndServiceRealDetailDto> getAllServiceAndConsumablesByServiceOrderId(String serviceOrderId)throws Exception;

    void replyComment(ReplyCommentParam replyCommentParam)throws Exception;
}
